package org.example.campusforum.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 文章点赞记录实体类
 *
 * 对应数据库中的article_like表，用于存储用户对文章的点赞记录。
 * 记录用户与文章的点赞关系，防止重复点赞，支持点赞统计功能。
 * 通过用户ID和文章ID的组合确保唯一性。
 *
 * @author CampusForum Team
 * @version 1.0
 * @since 2024
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ArticleLike implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 点赞记录主键ID
     * 数据库自增长字段，唯一标识一条点赞记录
     */
    private Long id;

    /**
     * 被点赞的文章ID
     * 外键关联article表的id字段，标识被点赞的文章
     */
    private Long articleId;

    /**
     * 点赞用户ID
     * 外键关联user表的id字段，标识执行点赞操作的用户
     */
    private Long userId;

    /**
     * 点赞时间
     * 记录用户点赞的时间，数据库默认为当前时间
     */
    private LocalDateTime createTime;
}
